home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / BORLAND TURBO / CHESS.PAK / EDIT.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  3.3 KB  |  102 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1991, 1993 by Borland International
  3. //----------------------------------------------------------------------------
  4. #include <owl/pch.h>
  5. #include <owl/window.h>
  6. #include <owl/dc.h>
  7. #include "wcdefs.h"
  8. #include "edit.h"
  9. #include "externs.h"
  10.  
  11. DEFINE_RESPONSE_TABLE1(TEditBarWindow, TWindow)
  12.   EV_WM_LBUTTONUP,
  13. END_RESPONSE_TABLE;
  14.  
  15.  
  16. TEditBarWindow::TEditBarWindow(TWindow* parent, const char* title)
  17.   : TWindow(parent, title)
  18. {
  19.   Attr.Style = WS_CHILD;
  20.   Attr.X = 3*BORDERSIZE + MAXBDSIZE*SQUARE_SIZE + 2*MYFRAMESIZE;
  21.   Attr.Y = BORDERSIZE;
  22.   EditBarRect.right = Attr.W = SQUARE_SIZE*2 + 6;
  23.   EditBarRect.bottom = Attr.H = SQUARE_SIZE*6 + 6;
  24.   EditBarRect.left = EditBarRect.top = 0;
  25.   SelectedItem = 0;
  26. }
  27.  
  28. void
  29. TEditBarWindow::Paint(TDC& dc, bool , TRect&)
  30. {
  31.   DrawFrame(dc, EditBarRect, TRUE);
  32.  
  33.   TMemoryDC memDC(dc);
  34.   BITMAP    bm;
  35.   GetObject(PieceBmpArray[0][white], sizeof(BITMAP), &bm);
  36.  
  37.   int i;
  38.   for (i = 0; i < 6; i++) {
  39.     TBitmap bitmap = PieceBmpArray[i][white];
  40.     TBitmap maskBmp = MaskArray[i];
  41.     memDC.SelectObject(maskBmp);
  42.     dc.BitBlt(3, 3+SQUARE_SIZE*i, bm.bmWidth, bm.bmHeight, memDC, 0, 0, SRCAND);
  43.     memDC.SelectObject(bitmap);
  44.     dc.BitBlt(3, 3 + SQUARE_SIZE*i, bm.bmWidth, bm.bmHeight,
  45.               memDC, 0, 0, (SelectedItem == i) ? NOTSRCERASE : SRCINVERT);
  46.   }
  47.  
  48.   for (i = 0; i < 6; i++) {
  49.     TBitmap bitmap = PieceBmpArray[i][black];
  50.     TBitmap maskBmp = MaskArray[i];
  51.     memDC.SelectObject(maskBmp);
  52.     dc.BitBlt(3 + SQUARE_SIZE, 3 + SQUARE_SIZE*i, bm.bmWidth, bm.bmHeight,
  53.               memDC, 0, 0, SRCAND);
  54.     memDC.SelectObject(bitmap);
  55.     dc.BitBlt(3+SQUARE_SIZE, 3 + SQUARE_SIZE*i, bm.bmWidth, bm.bmHeight,
  56.               memDC, 0, 0, (SelectedItem == i+6) ? NOTSRCERASE : SRCINVERT);
  57.   }
  58. }
  59.  
  60. void
  61. TEditBarWindow::EvLButtonUp(UINT, TPoint& point)
  62. {
  63.   int previousItem = SelectedItem;
  64.  
  65.   for (int i = 0; i < 6; i++)
  66.     for (int j = 0; j < 2; j++) {
  67.       TRect rect(TPoint(j*SQUARE_SIZE + 3, i*SQUARE_SIZE + 3), TSize(SQUARE_SIZE, SQUARE_SIZE));
  68.       if (rect.Contains(point))
  69.         SelectedItem = i + (j ? 6 : 0);
  70.     }
  71.   if (SelectedItem == previousItem)
  72.     return;
  73.  
  74.   BITMAP bm;
  75.   GetObject(PieceBmpArray[0][white], sizeof(BITMAP), &bm);
  76.  
  77.   int temp = previousItem % 6;
  78.  
  79.   TClientDC dc(*this);
  80.   TMemoryDC memDC(dc);
  81.  
  82.   TBitmap bitmap = PieceBmpArray[temp][(previousItem < 6) ? white : black];
  83.   TBitmap maskBmp = MaskArray[temp];
  84.   memDC.SelectObject(maskBmp);
  85.   dc.BitBlt((previousItem < 6) ? 3 : 3 + SQUARE_SIZE, 3 + SQUARE_SIZE*temp,
  86.             bm.bmWidth, bm.bmHeight, memDC, 0, 0, SRCERASE);
  87.   memDC.SelectObject(bitmap);
  88.   dc.BitBlt((previousItem < 6) ? 3 : 3 + SQUARE_SIZE, 3 + SQUARE_SIZE*temp,
  89.             bm.bmWidth, bm.bmHeight, memDC, 0, 0, SRCINVERT);
  90.  
  91.   temp = SelectedItem % 6;
  92.  
  93.   TBitmap bitmap2 = PieceBmpArray[temp][(SelectedItem < 6) ? white : black];
  94.   TBitmap maskBmp2 = MaskArray[temp];
  95.   memDC.SelectObject(maskBmp2);
  96.   dc.BitBlt((SelectedItem < 6) ? 3 : 3 + SQUARE_SIZE, 3 + SQUARE_SIZE*temp,
  97.          bm.bmWidth, bm.bmHeight, memDC, 0, 0, SRCAND);
  98.   memDC.SelectObject(bitmap2);
  99.   dc.BitBlt((SelectedItem < 6) ? 3 : 3 + SQUARE_SIZE, 3 + SQUARE_SIZE*temp,
  100.             bm.bmWidth, bm.bmHeight, memDC, 0, 0, NOTSRCERASE);
  101. }
  102.